package com.xb.cloud.user.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.xb.cloud.common.model.PageParam;
import com.xb.cloud.service.client.ServiceReturnCodes;
import com.xb.cloud.service.client.ServiceReturnInfo;
import com.xb.cloud.service.client.ServiceReturnUtils;
import com.xb.cloud.user.model.EndUserFavoriteShopExamplePaged;
import com.xb.cloud.user.model.EndUserFavoriteSku;
import com.xb.cloud.user.model.EndUserFavoriteSkuExample;
import com.xb.cloud.user.model.EndUserFavoriteSkuExamplePaged;
import com.xb.cloud.user.model.mapper.EndUserFavoriteSkuMapper;
import com.xb.cloud.user.service.client.EndUserFavoriteSkuService;
import com.xb.cloud.user.service.client.bo.EndUserFavoriteSkuBo;


@Service
public class EndUserFavoriteSkuServiceImpl extends AbstractService implements EndUserFavoriteSkuService {

	@Resource
	EndUserFavoriteSkuMapper endUserFavoriteSkuMapper;
	@Override
	public ServiceReturnInfo addFavoriteSku(EndUserFavoriteSkuBo endUserFavoriteSkuBo) {

		EndUserFavoriteSku endUserFavoriteSku=new EndUserFavoriteSku();
		endUserFavoriteSku.setId(ipKeyGenerator.generateKey());
		endUserFavoriteSku.setCompanyId(endUserFavoriteSkuBo.getCompanyId());
		endUserFavoriteSku.setEndUserId(endUserFavoriteSkuBo.getEndUserId());
		endUserFavoriteSku.setSkuId(endUserFavoriteSkuBo.getSkuId());
		endUserFavoriteSku.setCreateTime(timeService.getDate());
		
		int insert=endUserFavoriteSkuMapper.insert(endUserFavoriteSku);
		if(insert==1)
			return ServiceReturnUtils.success();
		else
			return ServiceReturnUtils.error(ServiceReturnCodes.SYSTEM_EXCEPTION);
	}
	
	
	@Override
	public ServiceReturnInfo cancelFavoriteSku(EndUserFavoriteSkuBo endUserFavoriteSkuBo) {
		EndUserFavoriteSkuExample example=new EndUserFavoriteSkuExample();
		example.createCriteria().andSkuIdEqualTo(endUserFavoriteSkuBo.getSkuId());
		int delete=endUserFavoriteSkuMapper.deleteByExample(example);
		if(delete!=1)
			return ServiceReturnUtils.error(ServiceReturnCodes.SYSTEM_EXCEPTION);
		return ServiceReturnUtils.success();
	}


	@Override
	public ServiceReturnInfo isFavoriteSku(EndUserFavoriteSkuBo endUserFavoriteSkuBo) {
		EndUserFavoriteSkuExample example=new EndUserFavoriteSkuExample();
		example.createCriteria().andSkuIdEqualTo(endUserFavoriteSkuBo.getSkuId());
		List<EndUserFavoriteSku> list=endUserFavoriteSkuMapper.selectByExample(example);
		if(list==null||list.size()==0)
			return ServiceReturnUtils.success(false);
		return ServiceReturnUtils.success(true);
	}


	@Override
	public ServiceReturnInfo list(EndUserFavoriteSkuBo endUserFavoriteSkuBo) {
		EndUserFavoriteSkuExamplePaged example=new EndUserFavoriteSkuExamplePaged();
		example.createCriteria()
			.andCompanyIdEqualTo(endUserFavoriteSkuBo.getCompanyId())
			.andEndUserIdEqualTo(endUserFavoriteSkuBo.getEndUserId());
		example.setPageParam(PageParam.resetPageParam(endUserFavoriteSkuBo.getStartPage(),endUserFavoriteSkuBo.getPageSize()));
		List<Long> favoriteShopIdList=endUserFavoriteSkuMapper.selectByExamplePaged(example);
		if(favoriteShopIdList==null)
			return ServiceReturnUtils.error(ServiceReturnCodes.SYSTEM_EXCEPTION);
		return ServiceReturnUtils.success(favoriteShopIdList);
	}

}
